package cn.tedu.mall.seckill.utils;

import cn.tedu.mall.common.exception.CoolSharkServiceException;
import cn.tedu.mall.common.restful.ResponseCode;
import org.springframework.stereotype.Component;

/**
 * @author zhangyiping
 * @date 2024/1/23
 */
/*
 布隆过滤器作用结论: 判断数据是否存在
 存在，有很小的概率不存在（对于业务影响很小）
 不存在，100%不存在
 */
@Component
public class BloomFilter extends RedisBloomUtils{
    // 定义布隆过滤器，存储所有spuId的key值
    public static final String SECKILL_BLOOM_SPUS_KEY = "seckill:bloom:spus";

    public void spuExist(Long spuId) {
        // 面对用户传入不存在的spuId进行过滤
        Boolean exists = bfexists(SECKILL_BLOOM_SPUS_KEY, spuId + "");
        if (!exists) {
            throw new CoolSharkServiceException(ResponseCode.NOT_FOUND, "当前数据中没有spuId:" + spuId);
        }
    }

    public void spuAdd(Long spuId) {
        bfadd(SECKILL_BLOOM_SPUS_KEY, spuId + "");
    }
}
